/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucue.ptc.rest;

import edu.ucue.ptc.gco.mdl.Pedido;
import edu.ucue.ptc.gco.ngc.DetallePedidoManagerLocal;
import edu.ucue.ptc.gco.ngc.PedidoManagerLocal;
import edu.ucue.ptc.gco.util.AtributoInvalidoException;
import edu.ucue.ptc.gco.util.InsuficienteStockException;
import edu.ucue.ptc.gco.util.PedidoException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.UriInfo;
import javax.ws.rs.PathParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.GET;
import javax.ws.rs.Produces;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;

/**
 * REST Web Service
 *
 * @author wilo
 */
@Path("GuardarPedido/{user}/{password}/{callback}")
@RequestScoped
public class GuardarPedidoResource {

    @Context
    private UriInfo context;

    @Inject
    private PedidoManagerLocal PedidoManager;
    
    /**
     * Creates a new instance of GuardarPedidoResource
     */
    public GuardarPedidoResource() {
    }

    /**
     * Retrieves representation of an instance of edu.ucue.ptc.rest.GuardarPedidoResource
     * @return an instance of java.lang.String
     */
    @GET
    @Produces("application/json")
    public String getJson(@PathParam("user") String user,@PathParam("password") String password,@PathParam("callback") String callback) {
        try {
            //TODO return proper representation object
            
            Pedido pedidonuevo=new Pedido();
            pedidonuevo.setCliente(ins.pedidoVenta2.getCliente());
            pedidonuevo.setDetalle(ins.pedidoVenta2.getDetalle());
            pedidonuevo.setDireccion(ins.pedidoVenta2.direccion);
            pedidonuevo.setEmpleado(ins.pedidoVenta2.getEmpleado());
            pedidonuevo.setEstado(ins.pedidoVenta2.getEstado());
            pedidonuevo.setFechaEntrega(ins.pedidoVenta2.getFechaEntrega());
            pedidonuevo.setFechaIngreso(ins.pedidoVenta2.getFechaIngreso());
            pedidonuevo.setIva(ins.pedidoVenta2.getIva());
            pedidonuevo.setSubtotal(ins.pedidoVenta2.getSubtotal());
            pedidonuevo.setTotal(ins.pedidoVenta2.getTotal());
            pedidonuevo.setVisita(ins.pedidoVenta2.getVisita());

            PedidoManager.crear2(pedidonuevo, user, password);
            Pedido newPedidoFin=new Pedido();
            
            ins.pedidoVenta2.setCliente(newPedidoFin.getCliente());
            ins.pedidoVenta2.setDetalle(newPedidoFin.getDetalle());
            //ins.pedidoVenta2.setDireccion(newPedidoFin.direccion);
            ins.pedidoVenta2.setEmpleado(newPedidoFin.getEmpleado());
            ins.pedidoVenta2.setEstado(newPedidoFin.getEstado());
            ins.pedidoVenta2.setFechaEntrega(newPedidoFin.getFechaEntrega());
            ins.pedidoVenta2.setFechaIngreso(newPedidoFin.getFechaIngreso());
            ins.pedidoVenta2.setIva(newPedidoFin.getIva());
            ins.pedidoVenta2.setSubtotal(newPedidoFin.getSubtotal());
            ins.pedidoVenta2.setTotal(newPedidoFin.getTotal());
            ins.pedidoVenta2.setVisita(newPedidoFin.getVisita());

            //return "Guardado";
            return callback+"({\"callback\":\""+callback+"\",\"respuesta\":\""+"Elemento Guardado"+"\"})";
        } catch (AtributoInvalidoException ex) {
            Logger.getLogger(GuardarPedidoResource.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InsuficienteStockException ex) {
            Logger.getLogger(GuardarPedidoResource.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(GuardarPedidoResource.class.getName()).log(Level.SEVERE, null, ex);
        }
        return callback+"({\"callback\":\""+callback+"\",\"errormsg\":\""+"Error al almacenar"+"\"})";
    }

    /**
     * PUT method for updating or creating an instance of GuardarPedidoResource
     * @param content representation for the resource
     * @return an HTTP response with content of the updated or created resource.
     */
    @PUT
    @Consumes("application/json")
    public void putJson(String content) {
    }
}
